/**
 * Created by kris on 2017/5/13.
 */
;(function ($) {
    $.system = {
        /**
         * 弹出一个询问对话框，如果选择是的话会执行fn
         * @param title
         * @param msg
         * @param fn
         */
        confirm: function (title, msg, fn) {
            $.messager.confirm(title, msg, function (r) {
                if (r) {
                    $.messager.progress({msg: '正在执行'});
                    if ($.utils.isFunction(fn)) {
                        fn();
                    }else{
                        $.messager.progress('close');
                    }
                }
            });
        },
        /**
         * 执行删除操作
         * @param p
         */
        remove: function (p) {
            $.system.confirm('提示', '确定要删除吗？', function () {
                $.post(p.url, p.data).success(function (data) {
                    var fn = p.success;
                    if (fn && typeof(fn) == 'function') {
                        fn(data);
                    }
                }).complete(function () {
                    $.messager.progress('close');
                });
            });
        },
        /**
         * 执行强制删除操作
         * @param p
         */
        reremove: function (p) {
                $.post(p.url, p.data).success(function () {
                    var fn = p.success;
                    if (fn && typeof(fn) == 'function') {
                        fn();
                    }
                }).complete(function () {
                    $.messager.progress('close');
                });
        },
        /**
         * 打开查看窗口
         * @param p
         */
        viewdialog: function (p) {
            var dlg, cfg = {
                buttons: [{
                    text: '<i class="fa fa-refresh" aria-hidden="true"></i> 刷新',
                    onClick: function () {
                        dlg.dialog('refresh');
                    }
                }, {
                    text: '<i class="fa fa-close" aria-hidden="true"></i> 关闭',
                    onClick: function (a, b, c, d) {
                        dlg.dialog('close');
                    }
                }]
            };

            var n = $.extend(true, cfg, p);
            dlg = $.system.formdialog(n);
        },
        /**
         * 打开表单窗口，会自动为表单附加提交和重置的操作
         * @param p
         */
        formdialog: function (p) {
            var dlg, cfg = {
                id: 'temp-window',
                href: '',
                cache: false,
                method: 'post',
                width: 680,
                height: 550,
                modal: true,
                title: '<无标题>',
                border: false,
                collapsible: false,
                minimizable: false,
                maximizable: false,
                queryParams: '',
                form: '#form',
                onClose: function () {
                    $(this).dialog('destroy');
                },
                buttons: [{
                    text: '<i class="fa fa-floppy-o" aria-hidden="true"></i> 提交',
                    onClick: function () {
                        var form = n.form;

                        $.messager.progress({msg: '正在提交'});
                        $(form).form('submit', {
                            onSubmit: function () {
                                var isValid = $(this).form('validate');
                                if (!isValid) {
                                    $.messager.progress('close');	// 如果表单是无效的则隐藏进度条
                                }
                                return isValid;	// 返回false终止表单提交
                            },
                            success: function (data) {
                                $.messager.progress('close');
                                //把data转换成json对象
                                try {
                                    data = $.parseJSON(data);
                                    dlg.dialog('close');
                                } catch (e) {
                                    $.insdep.error(data ? data : '请求失败，请检查请求地址');
                                    return;
                                }
                                var fn = p.success;
                                if (fn && typeof(fn) == 'function') {
                                    if (data.success) {
                                        fn();
                                    }
                                }
                            }
                        });
                    }
                }, {
                    text: '<i class="fa fa-reply" aria-hidden="true"></i> 重置',
                    onClick: function () {
                        $.messager.confirm('提示', '确定要重置表单吗？', function (r) {
                            if (r) {
                                var form = n.form;
                                $(form).form('reset');
                            }
                        });
                    }
                }]
            };
            var n = $.extend(true, cfg, p);
            dlg = $('<div/>').dialog(n);
            return dlg;
        },
        /**
         * 清除缓存
         * @param url server url
         */
        clearCache: function (url) {

            $.messager.confirm('提示', '确定要清除数据缓存吗？', function (r) {
                if (r) {
                    $.messager.progress({msg: '正在执行'});
                    $.post(url).complete(function () {
                        $.messager.progress('close');
                    });
                }
            });
        }
    };
})($);